package 系统复习.面试题.数组_字符串;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 给定一个数字 N，当它满足以下条件的时候返回 true：
 * 原数字旋转 180° 以后可以得到新的数字。
 * 如 0, 1, 6, 8, 9 旋转 180° 以后，得到了新的数字 0, 1, 9, 8, 6 。
 * 2, 3, 4, 5, 7 旋转 180° 后，得到的不是数字。
 * 易混淆数 (confusing number) 在旋转180°以后，可以得到和原来不同的数，且新数字的每一位都是有效的。
 */
public class L1056 {

    public boolean confusingNumber(int n) {

        int original = n;
        int rotated = 0;
        while (original > 0) {
            int rotatedDigit = getRotatedDigit(original % 10);
            if (rotatedDigit < 0) {
                return false;
            }
            rotated = rotated * 10 + rotatedDigit;
            original /= 10;
        }
        return rotated != n;

    }

    private int getRotatedDigit(int digit) {
        if (digit == 0 || digit == 1 || digit == 8) {
            return digit;
        }
        if (digit == 6 || digit == 9) {
            return 15 - digit;
        }
        return -1;
    }

    public static void main(String[] args) {
        System.out.println(new L1056().confusingNumber(6));
    }
}
